package com.springframework.sample;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Représente un extrait de code Spring
 * 
 * @author Stéphane Cottin
 */
public abstract class ASpringSample{

    protected final static Logger log = LoggerFactory.getLogger(ASpringSample.class);
    
    
    /**
     * Lance et test l'extrait de code
     */
    public void doTestSample(){
        log.debug("*** Lancement du code: [{}] ***", getSampleName());
        if(getSampleDescription() != null){
            log.debug("Ce code montre: ");
            for(String desc: getSampleDescription()){
                log.debug("  - {}", desc);
            }
        }
        log.debug("");
        
        // Contenu du test que devra hériter la classe fille
        sampleContent();
        
        log.debug("");
        log.debug("*** Fin du code: [{}] ***", getSampleName());
        
        log.debug("");
        log.debug("");
    }
    
    
    /**
     * Le contenu de l'extrait de code
     */
   protected abstract void sampleContent();
    
    
    /**
     * Récupère le nom de l'extrait de code
     */
   protected abstract String getSampleName();
    
    
    /**
     * Récupère la description de l'extrait de code
     */
   protected abstract String[] getSampleDescription();
}